/*
 *
 *  File: 'test_trie.cpp'
 *
 *  Author: Samip Shah <samipshah@alumni.cmu.edu>
 *  Date: Sep 25, 2011
 *
 */

#include <trie.h>
#include <string>
#include <stdio.h>
#include <iostream>

Trie<char> Dictionary;

bool dictExists(std::string& str) {
  return Dictionary.exists(str.c_str(), str.length());
}

bool dictAdd(std::string& str) {
  return Dictionary.add(str.c_str(), str.length());
}


int main(int argc, char** argv)
{
  Dictionary.setSentinel('\0');
  std::string str;
  str.assign("a");
  dictAdd(str);
  str.assign("an");
  dictAdd(str);
  str.assign("the");
  dictAdd(str);
  str.assign("gallops");
  dictAdd(str);
  str.assign("gall");
  dictAdd(str);

  bool result = false;
  result = dictExists(str);
  std::cout << str  << " : " << result << std::endl;

  str.assign("ant");
  result = dictExists(str);
  std::cout << str  << " : " << result << std::endl;

  str.assign("gall");
  result = dictExists(str);
  std::cout << str  << " : " << result << std::endl;

  str.assign("gallo");
  result = dictExists(str);
  std::cout << str  << " : " << result << std::endl;

  str.assign("gallops");
  result = dictExists(str);
  std::cout << str  << " : " << result << std::endl;

   
  Dictionary.preOrderTraversal(Trie<char>::PRINT);  
  unsigned int size = Dictionary.total_size();
  std::cout << "Total Size: " << size << std::endl;
  return 0;
}
